/**
 * 题目：有四个数字：1、2、3、4，能组成多少个互不相同且无重复数字的三位数？各是多少？
 *
 * 程序分析：可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
 */

function check(i: number, j: number, k: number, total: number) {
    if (i !== j && i !== k && j !== k) {
        total++
        console.log(i, j, k)
    }
    return total;
}

function case001_01() {
    // 使用 for 循环实现
    const _arr: number[] = [1, 2, 3, 4]
    let total = 0
    for (let i = 0; i < _arr.length; i++) {
        for (let j = 0; j < _arr.length; j++) {
            for (let k = 0; k < _arr.length; k++) {
                total = check(_arr[i], _arr[j], _arr[k], total);
            }
        }
    }
    console.log(`总计：${total}`)
}

function case001_02() {
    // 使用数组自带的 foreach 实现
    const _arr: number[] = [1, 2, 3, 4]
    let total = 0

    _arr.forEach(i => {
        _arr.forEach(j => {
            _arr.forEach(k => {
                total = check(i, j, k, total);
            })
        })
    })

    console.log(`总计：${total}`)
}


export const case001 = ()=>{
    console.log("实现1------------------------------------------------")
    case001_01()
    console.log("实现2------------------------------------------------")
    case001_02()
}
